home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 7 / FM Towns Free Software Collection 7.iso / taropyon / guilib3 / inc / dta.h < prev    next >
C/C++ Source or Header  |  1993-11-30  |  5KB  |  154 lines

  1. /*    :*****************************************************************
  2.     :    "dta.h"     :    system“Pride”DTA ライブラリ
  3.     :*****************************************************************
  4. */
  5. #ifndef    _DTA_H
  6. #define    _DTA_H
  7.  
  8. #ifndef    _SPDEFS_H
  9. #    include    "spdefs.h"
  10. #endif
  11.  
  12. #ifdef        FAR
  13. #    undef    FAR
  14. #endif
  15. #define        FAR        _far
  16.  
  17. #define    DTA_ID_LEN        (12)
  18. extern    CONST    char    DTA_ID[];    /* "PRIDE   .DTA"    */
  19.  
  20. #define    DTA_NAME_LEN    (16)
  21. #define    DTA_MAX_CLUSTER    (256)
  22.  
  23. #define    DTA_STT_NOTHING    (0)
  24. #define    DTA_STT_PARENT    (1)
  25. #define    DTA_STT_CHILD    (2)
  26. #define    DTA_STT_SWAPOUT    (0x80)
  27. #define    DTA_STTBIT_FILE    (0x80)    /* ファイル上にスワップアウト    */
  28.  
  29. /*    DTA SLOT 構造体    */
  30. typedef    struct
  31. {    char        name[DTA_NAME_LEN];
  32.     UCHAR        stt;        /* 状態                            */
  33.     UCHAR        att;        /* 属性                            */
  34.     USHORT        id;            /* リザーブ                        */
  35.     size_t        offset;        /* dtaPtr からのオフセット        */
  36.     size_t        size;        /* サイズ                        */
  37.     size_t        topCluster;    /* 先頭クラスタ                    */
  38. } DTASLOT_T;
  39.  
  40. /* DTA 領域ヘッダー部構造体    */
  41. typedef    struct
  42. {    char        id[14];
  43.     USHORT        ver;            /* バージョン    */
  44.     size_t        maxSiz;
  45.     size_t        topOfs;
  46.     int            ret;
  47.     USHORT        bytesPerCluster;
  48.     USHORT        clusterMax;        /* レコード数        */
  49.     UCHAR        flagTbl[DTA_MAX_CLUSTER/8];
  50.     int            slotMax;
  51.     DTASLOT_T    slot[1];        /* DTA スロット格納領域    */
  52. } DTAHEAD_T;
  53.  
  54. typedef    struct
  55. {
  56.     size_t    siz;        /* サイズ        */
  57.     int        mode;
  58.     char    rsv[128-8];    /* リザーブ        */
  59.     char    path[128];    /* ファイル名    */
  60. } DTASWAP_T;
  61.  
  62. #define    DTA_SWAPMODE_CLEAR    (0x0001)
  63.  
  64. /*    レコード管理構造体    */
  65. typedef    struct _dta_recode_t
  66. {
  67.     struct _dta_recode_t    *next;
  68.     DTASLOT_T                *dtaSlot;
  69.     int                        stt;
  70.     size_t                    siz;
  71.     void                    *ptr;
  72.     char                    p[1];
  73. } DTARECODE_T;
  74.  
  75. #define    DTA_RECODE_HASH_MAX    (16)
  76.  
  77. /*    DTA 領域の管理構造体    */
  78. typedef    struct
  79. {
  80.     DTAHEAD_T    *head;
  81.     FAR void    *dtaPtr;
  82.     DTARECODE_T    *recodeHash[DTA_RECODE_HASH_MAX];
  83.     UCHAR        stt;        /* 状態    */
  84.     UCHAR        att;        /* 属性    */
  85.     SHORT        cd;
  86. } DTACTRL_T;
  87.  
  88. #define    DTA_BYTES_PER_CLUSTER    (256)    /* クラスタの大きさ        */
  89. #define    DTA_HEAD_SIZ            (sizeof(DTAHEAD_T) - sizeof(DTASLOT_T))
  90. #define    DTA_HEAD_AND_SLOT_SIZE(head)    (DTA_HEAD_SIZ + (head)->slotMax * sizeof(DTASLOT_T))
  91.  
  92. /*    "dta011.c"        ------------------------------------------------*/
  93. extern    DTACTRL_T    *DTA_open(void);        /* 親プロセス用    */
  94.  
  95. /*    "dta012.c"        ------------------------------------------------*/
  96. extern    int            DTA_isAtPcl(void);        /* 子プロセス用    */
  97. extern    DTACTRL_T    *DTA_openCheck(void);
  98.  
  99. /*    "dta013.c"        ------------------------------------------------*/
  100. extern    void    DTA_readData( DTACTRL_T *dtaCtrl, void *buf, size_t offset, size_t siz );
  101.  
  102. /*    "dta014.c"        ------------------------------------------------*/
  103. extern    void    DTA_writeData( DTACTRL_T *dtaCtrl, void *buf, size_t offset, size_t siz );
  104.  
  105. /*    "dta015.c"        ------------------------------------------------*/
  106. extern    int        DTA_freeCtrl( DTACTRL_T *dtaCtrl );
  107.  
  108. /*    "dta016.c"        ------------------------------------------------*/
  109. extern    int        DTA_resetCtrl( DTACTRL_T *dtaCtrl );
  110.  
  111. /*    "dta017.c"        ------------------------------------------------*/
  112. extern    int        DTA_dump( CONST char *fn );    /* for DEBUG    */
  113.  
  114. /*    "dta018.c"        ------------------------------------------------*/
  115. extern    int        DTA_flush( DTACTRL_T *dtaCtrl );
  116.  
  117. /*    "dta020.c"        ------------------------------------------------*/
  118. extern    int        DTA_putHeader( DTACTRL_T *dtaCtrl );
  119.  
  120. /*    "dta021.c"        ------------------------------------------------*/
  121. extern    int        DTA_getHeader( DTACTRL_T *dtaCtrl );
  122.  
  123. /*    "dta030.c"        ------------------------------------------------*/
  124. extern    DTASLOT_T    *DTA_getSlot( DTACTRL_T *dtaCtrl, CONST char *name );
  125.  
  126. /*    "dta031.c"        ------------------------------------------------*/
  127. extern    DTASLOT_T    *DTA_openSlot( DTACTRL_T *dtaCtrl, CONST char *name, size_t siz );
  128.  
  129. /*    "dta032.c"        ------------------------------------------------*/
  130. extern    int        DTA_clearSlot( DTACTRL_T *dtaCtrl, DTASLOT_T *dtaSlot );
  131.  
  132. /*    "dta033.c"        ------------------------------------------------*/
  133. extern    int        DTA_removeSlot( DTACTRL_T *dtaCtrl, CONST char *name );
  134.  
  135. /*    "dta034.c"        ------------------------------------------------*/
  136. extern    size_t    DTA_getFreeCluster( DTACTRL_T *dtaCtrl );
  137.  
  138. /*==================================================================*/
  139. /*    "dta040.c"        ------------------------------------------------*/
  140. extern    DTARECODE_T    *DTA_createRecode( DTACTRL_T *dtaCtrl, CONST char *name, size_t siz );
  141. extern    DTARECODE_T    *DTA_openRecode( DTACTRL_T *dtaCtrl, CONST char *name );
  142. extern    int        DTA_closeRecode( DTACTRL_T *dtaCtrl, DTARECODE_T *dtaRecode );
  143.  
  144. /*    "dta041.c"        ------------------------------------------------*/
  145. extern    int        DTA_flushRecode( DTACTRL_T *dtaCtrl, DTARECODE_T *dtaRecode );
  146.  
  147. /*    "dta042.c"        ------------------------------------------------*/
  148. extern    int        DTA_freeAllRecode( DTACTRL_T *dtaCtrl );
  149.  
  150. /*    "dta043.c"        ------------------------------------------------*/
  151. extern    int        DTA_readRecode( DTACTRL_T *dtaCtrl, DTARECODE_T *dtaRecode );
  152.  
  153. #endif
  154.